package encapsulation.b;
import encapsulation.a.Person;

public class Boy extends Person{
    public void play(){
        System.out.println(super.testProtected);        // 受保护的成员变量可以在包外的子类中访问
        System.out.println(super.testPublic);        // 公开的成员变量可以在包外的子类中访问
        super.test();        // 受保护的成员方法可以在包外的子类中访问
        // System.out.println(super.testPrivate);        // 私有的成员变量无法在包外的子类中访问
        // System.out.println(super.testDefault);        // 默认的成员变量无法在包外的子类中访问

        Person p = new Person();    // 创建父类对象
        // System.out.println(p.testProtected);        // 不能访问父类对象的受保护成员变量
        System.out.println(p.testPublic);        // 可以访问父类对象的公开成员变量
    }
}

/*
 * 学习笔记：
 * 关于 protected 的两个细节：
 * 1. 若父类和子类在同一个包中，子类可以访问父类的 protected 成员，也可以访问父类对象的 protected 成员
 * 2. 若父类和子类不在同一个包中，子类可以访问父类的 protected 成员，但是不能访问父类对象的 protected 成员
 */
